#pragma once

#include "object/object.h"
#include "object/viewpoint.h"

class Map;
namespace battle::object
{

	class WorldObject : public battle::object::Object
	{
	public:

		virtual void Update(unsigned int update_diff, unsigned int /*time_diff*/) {};
		const char* GetName() const { return ""; }
		float GetPositionX() const { return 0.0f; }
		float GetPositionY() const { return 0.0f; }
		float GetPositionZ() const { return 0.0f; }
		float GetOrientation() const { return 0.0f; }
		bool IsActiveObject() const { return false; }
		virtual void CleanupsBeforeDelete() {}
		void ResetMap() {}
		void SaveRespawnTime() {}
		void AddObjectToRemoveList() {};
		Map* GetMap() const { return nullptr; }
		ViewPoint& GetViewPoint() { return m_viewPoint; }
		void SetMap(Map*) {}
		void Relocate(float x, float y, float z) {};
		void Relocate(float x, float y, float z, float orientation) {};
		unsigned int GetMapId() const { return m_mapId; }
		unsigned int GetInstanceId() const { return m_InstanceId; }

	protected:
		void SetLocationMapId(unsigned int _mapId) { m_mapId = _mapId; }

	protected:
		std::string m_name;
		Position m_position;

	private:
		ViewPoint m_viewPoint;
		unsigned int m_mapId = 0;
		unsigned int m_InstanceId = 0;
	};

}